//*********************************************************
//
//    Copyright (c) Microsoft. All rights reserved.
//    This code is licensed under the Apache License, Version 2.0.
//    THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF
//    ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
//    IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
//    PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
//
//*********************************************************

namespace Microsoft.Research.DataLayer
{
    /// <summary>
    /// This is responsible for configuring the data provider, that this is attached to
    /// </summary>
    public interface IDataProviderConfigurator
    {
        /// <summary>
        /// Are you configured properly to be used with your assigned data provider.
        /// this might be the best time to check the parameters acquired
        /// </summary>
        /// <returns></returns>
        bool IsConfigured();

        /// <summary>
        /// Give out the configurations you acquired. This will be stored with 
        /// the linked object and will be used with your data provider to retreive 
        /// data.
        /// </summary>
        /// <returns>configuration</returns>
        string GetConfiguredParameters();

        /// <summary>
        /// Sets the parameters.
        /// </summary>
        /// <param name="parameters">The parameters.</param>
        void SetParameters(string parameters);

        /// <summary>
        /// This is only for displaying purposes. This could be user friendly string.
        /// </summary>
        /// <returns></returns>
        string ToString();

        ///// <summary>
        ///// This function will be called when the user want to commit the data 
        ///// which he has entered.
        ///// </summary>
        //void Commit();
    }
}
